-
Notifications
You must be signed in to change notification settings - Fork 14.5k
[mlir][tosa] Remove profile compliance of cond_if and while_loop #148212
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[mlir][tosa] Remove profile compliance of cond_if and while_loop #148212
Conversation
The requirement for a boolean condition is already checked for both operators elsewhere. `cond_if` requires a boolean condition at construction. `while_loop` cond_graph is checked in the verifier for a scalar boolean output type. Change-Id: I508dc664a44cf163fcc3fb7731ae8369424de132
@llvm/pr-subscribers-mlir @llvm/pr-subscribers-mlir-tosa Author: Luke Hutton (lhutton1) ChangesThe requirement for a boolean condition is already checked for both operators elsewhere. Full diff: https://github.com/llvm/llvm-project/pull/148212.diff 2 Files Affected:
diff --git a/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc b/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc
index c77da91942ef9..1f718accabd15 100644
--- a/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc
+++ b/mlir/include/mlir/Dialect/Tosa/IR/TosaComplianceData.h.inc
@@ -433,8 +433,6 @@ extensionComplianceMap = {
{{Extension::fp8e4m3}, {{fp8e4m3T, fp8e4m3T}}},
{{Extension::fp8e5m2}, {{fp8e5m2T, fp8e5m2T}}},
{{Extension::bf16}, {{bf16T, bf16T}}}}},
- {"tosa.cond_if", {{{Extension::controlflow}, {{boolT}}}}},
- {"tosa.while_loop", {{{Extension::controlflow}, {{boolT}}}}},
{"tosa.variable", {{{Extension::variable}, {{i8T}, {fp16T}, {fp32T}}}}},
{"tosa.variable_write",
{{{Extension::variable}, {{i8T}, {fp16T}, {fp32T}}}}},
diff --git a/mlir/lib/Dialect/Tosa/Transforms/TosaProfileCompliance.cpp b/mlir/lib/Dialect/Tosa/Transforms/TosaProfileCompliance.cpp
index a4edccfd4c9c7..88b0f3650ca01 100644
--- a/mlir/lib/Dialect/Tosa/Transforms/TosaProfileCompliance.cpp
+++ b/mlir/lib/Dialect/Tosa/Transforms/TosaProfileCompliance.cpp
@@ -225,20 +225,6 @@ LogicalResult ProfileInfoDepot::populateProfileInfo(tosa::VariableWriteOp op) {
return success();
}
-template <>
-LogicalResult ProfileInfoDepot::populateProfileInfo(tosa::IfOp op) {
- addValue(op.getCondition());
- return success();
-}
-
-template <>
-LogicalResult ProfileInfoDepot::populateProfileInfo(tosa::WhileOp op) {
- Block *block = &op.getCondGraph().front();
- Operation *terminator = block->getTerminator();
- addValue(terminator->getOperands().front());
- return success();
-}
-
LogicalResult ProfileInfoDepot::populatationDispatch(Operation *op) {
// This helper function only populates the info for the customised operands.
#define POPULATE_PROFILE_INFO_CUSTOM(tosaOp) \
@@ -280,8 +266,6 @@ LogicalResult ProfileInfoDepot::populatationDispatch(Operation *op) {
POPULATE_PROFILE_INFO_CUSTOM(MatMul)
POPULATE_PROFILE_INFO_CUSTOM(Variable)
POPULATE_PROFILE_INFO_CUSTOM(VariableWrite)
- POPULATE_PROFILE_INFO_CUSTOM(If)
- POPULATE_PROFILE_INFO_CUSTOM(While)
// For the most of tosa operators, all operands are profile/extension related
// and hence are all considered in this profile-based compilance check.
@@ -340,6 +324,8 @@ LogicalResult ProfileInfoDepot::populatationDispatch(Operation *op) {
// constraint for those operations.
POPULATE_PROFILE_INFO_SKIP(ConstShape)
POPULATE_PROFILE_INFO_SKIP(Yield)
+ POPULATE_PROFILE_INFO_SKIP(If)
+ POPULATE_PROFILE_INFO_SKIP(While)
return failure();
}
|
@@ -433,8 +433,6 @@ extensionComplianceMap = { | |||
{{Extension::fp8e4m3}, {{fp8e4m3T, fp8e4m3T}}}, | |||
{{Extension::fp8e5m2}, {{fp8e5m2T, fp8e5m2T}}}, | |||
{{Extension::bf16}, {{bf16T, bf16T}}}}}, | |||
{"tosa.cond_if", {{{Extension::controlflow}, {{boolT}}}}}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the impact of having these here ?
Is it just redundancy ?
For each Op, do we have a clear boundary on what the verifier checks vs Profile check ?
The requirement for a boolean condition is already checked for both operators elsewhere.
cond_if
requires a boolean condition at construction.while_loop
cond_graph is checked in the verifier for a scalar boolean output type.